热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

明晚九点|发布系统演进与持续集成

主题:发布系统演进与持续集成

内容:

  • 背景介绍
  • 手动发布的阶段
  • 自动化阶段---脚本
  • puppet
  • 自主研发支持
  • 支持容器化
  • 持续集成

主讲师:萝卜

  • 多年 go 语言开发经验
  • 从事自动化运维和基础架构相关工作

背景

管理什么?

  • 用户
  • 权限
  • 配置文件
  • 软件包
  • 服务
  • 机器
  • cron

特色

  • 支持异构系统,linux、windows
  • 支持多种语言,java、php、c++、web
  • 大规模部署
  • 跨 IDC
  • 与其它运维工具无缝集成
  • 支持全量与增量发布
  • 支持健康检查
  • 支持各种并发控制
  • 支持各种数据统计
  • 实时性要求高

手动发布阶段

人肉发布流程
技术分享图片

人肉发布优点

  • 最直接
  • 简单可信赖
  • 小规模,适合创业公司
  • 天然支持异构环境,不同语言

人肉发布缺点

  • 效率,人力浪费,(@ο@) 哇~,排队了
  • 容易出错,特别是紧急上线,文件拷少了
  • Check考虑不全(经验总结自动化)
  • 流程好长
  • 好慢。。。
  • 怎么回滚?
  • 人肉并行吗?

自动化初始阶段

  • scp、rsync、python
  • 依赖运维脚本,需要修改脚本?参数传少了?别人写的?
  • 严重依赖中控机(ACL)
  • 脚本缺乏统一管理,散落在各机器上
  • 发布的中间数据、结果丢失
  • 如何进行回滚、并发控制?

puppet

  • puppet 解决的问题
  • 自动化部署
  • 资源管理
  • 系统初始化

puppet 架构
技术分享图片

puppet 工作步骤

  • 客户端 puppetd 调用 facter ,facter 会探测出这台主机的一些变量如主机名、内存大小、IP 地址等。然后 puppetd 把这些信息发送到服务器端。
  • 服务器端的 puppetmaster 检测到客户端的主机名,然后会到manifest 里面对应的 node 配置,然后对这段内容进行解析,facter 送过来的信息可以作为变量进行处理的,node 牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。
  • 客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
  • 服务器再把客户端的执行结果写入日志。

问题

  • 二次开发成本
  • 机器数量持续增加效率
  • 与其他系统集成

自主研发之路

  • 设计考量
  • 用户权限、安全管理
  • 管理机器
  • 管理软件包
  • 跨平台支持
  • 数据统计
  • 并发控制、性能
  • 持续集成

业务领域

技术分享图片

基本架构

技术分享图片
机器管理
技术分享图片

  • 运维手动添加
  • 静态分配
  • 按照产品线(分组)
  • 权限
  • 心跳、存活
  • 资源

包管理

  • 支持多语言
  • 高可用
  • 多版本
  • 自动构建、打包
    技术分享图片

任务管理

  • 调度系统
  • Agent 执行器
  • 资源中心
  • 依赖子系统

技术分享图片

Agent 设计考量

  • 分布式部署
  • 自升级
  • 多账号执行支持
  • 任务幂等性
  • 各种 agent 如何管理

容器化支持

创建服务的流程

  • docker 中部署服务构建镜像(用 docker build 构建镜像)
  • 发布镜像(push 到共享的镜像仓库中)
  • 下载镜像(使用者将镜像下载到客户端本地)
  • 运行容器(将镜像不环境变量相结合,运行容器)
  • 访问服务(通过端口映射或独立IP的方式访问服务)
    技术分享图片
    步骤
  • 制作镜像(打包)
  • 部署服务
  • 启动容器
  • 健康检查
    镜像
  • 自动构建镜像
  • 镜像仓库
  • 镜像大小
    网络方案
    技术分享图片
    健康检查

  • 配置中心
  • 监控告警接入
  • 服务自动拉起

开源解决方案

  • Mesos+Marathon
  • Kubernetes

Mesos+Marathon解决方案
技术分享图片

Kubernetes 方案
技术分享图片

加小助手微信:1902433859(进入直播分享群)

明晚九点|发布系统演进与持续集成


推荐阅读
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
mou377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有